Hi,介紹了api的各種函數後,相信讀者一定很好奇,有了這些資料之後要怎麼回測啊?
畢竟在開始實單做程式交易之前,交易策略到底會賺錢還是賠錢,沒有回測真的不敢用啊!
目前主流的量化交易方式分成兩類:
專業軟體以MultiCharts市占率最高,而外匯保證金的部分則有很多人使用MT5。
不過今天要介紹的是自行開發的部分,目前已有很多回測框架,讓大家不用從0開始,像是:
今天要介紹的是一款圖畫起來很漂亮的回測框架 - Backtesting。
首先用 pip install backtesting
安裝,
安裝完後歷史數據的部分可以從我們的Shioaji抓,
標的我們就先以2330台積電為例,輸入完起訖日期後,把分K資料轉為日K並放到df裡。
import shioaji as sj
import pandas as pd
api = sj.Shioaji(backend='https', simulation=False)
#抓取2330台積電2020年到2021年9月的K線資料
kbars =api.kbars(contract=api.Contracts.Stocks['2330'], start = '2020-01-01', end = '2021-09-22' )
#轉成dataframe
df = pd.DataFrame({**kbars})
df.ts = pd.to_datetime(df.ts)
#分K轉成日K
df.set_index(df.ts,inplace=True)
df = df.resample('D').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume':'sum'})
df.dropna(inplace=True)
df.head(5)
Out:
| ts | Open | High | Low | Close | Volume |
|:--------------------|-------:|-------:|------:|--------:|---------:|
| 2020-01-02 00:00:00 | 332.5 | 339 | 332.5 | 339 | 31656 |
| 2020-01-03 00:00:00 | 344 | 345 | 335.5 | 339.5 | 41711 |
| 2020-01-06 00:00:00 | 333 | 334.5 | 332 | 332 | 44900 |
| 2020-01-07 00:00:00 | 332.5 | 333 | 326.5 | 329.5 | 50762 |
| 2020-01-08 00:00:00 | 325 | 333 | 325 | 329.5 | 37426 |
處理完資料後就可以來介紹backtesting拉,大家準備好了嗎?
下面先放一張圖給大家聞香一下,
圖的上方可以顯示出的淨值曲線變化、區間內每筆交易賺賠及進出場、
接下來幾篇會和大家介紹怎麼用backtesting來實做交易策略!